package com.xiaozhen.blog.utils;

import io.minio.BucketExistsArgs;
import io.minio.MakeBucketArgs;
import io.minio.MinioClient;
import io.minio.UploadObjectArgs;
import io.minio.errors.MinioException;
import org.springframework.stereotype.Component;

import java.io.IOException;
import java.net.URL;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;

/**
 * @create 2023-05-05 16:13
 * 上传文件到 minio 的工具类
 */
@Component
public class MinioUtils {

//    public static String uploadFile(String bucketName, String fileName,String filePath) throws IOException, NoSuchAlgorithmException, InvalidKeyException {
//        String url = "";
//        try {
//            // 创建minio客户端
//            MinioClient minioClient =
//                    MinioClient.builder()
//                            .endpoint("http://192.168.200.128:9000")
//                            .credentials("S5KJPB7Z25CMTFC3RRGH", "sNd7s1FaOqCodx+EphvNeXuTVJS7MpatAmki5ndS")
//                            .build();
//
//            boolean found = minioClient.bucketExists(BucketExistsArgs.builder().bucket(bucketName).build());
//            // 如果桶不存在
//            if (!found) {
//                // 创建一个新桶
//                minioClient.makeBucket(MakeBucketArgs.builder().bucket(bucketName).build());
//            } else {
//                // 该桶已经存在
//                System.out.println("该桶已经存在");
//            }
//            // TODO 文件路径
//
//            // 上传 "C:\\Users\\啊圳\\Desktop\\图片\\常用网站图标\\个人博客.jpg" 图片在minio叫 '个人博客.jpg' 在 picture 桶里面
//            minioClient.uploadObject(
//                    UploadObjectArgs.builder()
//                            .bucket(bucketName) // 桶名
//                            .object(fileName) // 文件名
//                            .filename(filePath) // 文件路径
//                            .build());
//
//            // 图片访问路径
//            url = "http://192.168.200.128:9000/" + bucketName + "/" + fileName;
//            System.out.println(url);
//            System.out.println("http://192.168.200.128:9000/user/user001.jpg");
//
//        } catch (MinioException e) {
//            System.out.println("Error occurred: " + e);
//            System.out.println("HTTP trace: " + e.httpTrace());
//        }
//        return url;
//    }

    public static String uploadFile(String bucketName, String fileName,String filePath) throws IOException, NoSuchAlgorithmException, InvalidKeyException {
        String url = "";
        try {
            // 创建minio客户端
            MinioClient minioClient =
                    MinioClient.builder()
                            .endpoint("http://47.120.10.227:9000")
                            .credentials("ImkHvKmHcYahPFrU", "9vQN5ylmW1fcEXQTct7HvPrDrGbMPF4F")
                            .build();

            boolean found = minioClient.bucketExists(BucketExistsArgs.builder().bucket(bucketName).build());
            // 如果桶不存在
            if (!found) {
                // 创建一个新桶
                minioClient.makeBucket(MakeBucketArgs.builder().bucket(bucketName).build());
            } else {
                // 该桶已经存在
                System.out.println("该桶已经存在");
            }
            // TODO 文件路径

            // 上传 "C:\\Users\\啊圳\\Desktop\\图片\\常用网站图标\\个人博客.jpg" 图片在minio叫 '个人博客.jpg' 在 picture 桶里面
            minioClient.uploadObject(
                    UploadObjectArgs.builder()
                            .bucket(bucketName) // 桶名
                            .object(fileName) // 文件名
                            .filename(filePath) // 文件路径
                            .build());

            // 图片访问路径
            url = "http://47.120.10.227:9000/" + bucketName + "/" + fileName;
            System.out.println(url);
            System.out.println("http://47.120.10.227:9000/user/user001.jpg");

        } catch (MinioException e) {
            System.out.println("Error occurred: " + e);
            System.out.println("HTTP trace: " + e.httpTrace());
        }
        return url;
    }
}

